<html>
<body>
<p><strong>8.中心化小程序 &amp; 1.0/Pro数据结构转换</strong>  邢晓訸</p>
<ul>
    <li>
        <pre>
            console/config/main-local.php中gii模块配置成这样
            'modules' => [
                'gii' => [
                    'class'      => \yii\gii\Module::class,
                    'generators' => [
                        'schema' => [
                            'class'     => \app\services\mina\formater\tpl\JsonGenerator::class,
                            'baseClass' => \app\services\mina\formater\MinaData::class,
                            'templates' => [
                                'default' => '@app/services/mina/formater/tpl',
                            ]
                        ],
                    ],
                ],
            ],
        </pre>
    </li>
    <li>在Yapi写好api文档, 获取mock数据<img src="" alt="mock_data.gif"></li>
    <li>在dmall项目根目录下执行如下命令:<br>

        php yii gii/schema --jsonData={得到的mock数据}</li>
    <li>在@app/app/services/formater目录下会生成JsonSchema.php文件, 如下图: <img src="" alt="Untitled.png"></li>
    <li>打开JsonSchema.php可看到如下内容:</li>
</ul>
<p><img src="" alt="Untitled 1.png"></p>
<ul>
    <li>@Field是自定义的注解, 可以帮助我们自动将构造函数种作为参数传入的$data的字段值, 赋值到对应的类属性.<br data-tomark-pass>
        @Field 属性说明:
        <ul>
            <li>saaSStudio 该字段对应的1.0工作室接口json数据的字段名, 需要按需填写字段映射关系</li>
            <li>saaSClub 该字段对应的1.0俱乐部接口json数据的字段名, 需要按需填写更改映射关系</li>
            <li>proStudio 该字段对应的pro工作室接口json数据的字段名, 需要按需填写更改映射关系</li>
            <li>proClub 该字段对应的pro俱乐部接口json数据的字段名, 需要按需填写更改映射关系</li>
            <li>isArray 是否以json array格式输出, 不需要关心</li>
            <li>type 字段类型, 不需要关心</li>
        </ul>
    </li>
    <li>代码中使用时, 首先需要自己调用1.0 / Pro的api, 获取接口响应后, 实例化刚才生成的类, 将获取的响应作为参数(只取data部分, code和msg不要)传入, 即可自动转换数据类型, 示例:</li>
</ul>
<p><img src="" alt="Untitled 2.png"></p>
<p>得到:</p>
<p><img src="" alt="Untitled 3.png"></p>
<ul>
    <li>php注解ide插件
        <ul>
            <li><a href="https://plugins.jetbrains.com/plugin/7320-php-annotations">https://plugins.jetbrains.com/plugin/7320-php-annotations</a> or <a href="https://plugins.jetbrains.com/plugin/7219-symfony-support">https://plugins.jetbrains.com/plugin/7219-symfony-support</a></li>
        </ul>
    </li>
</ul>
</body>
</html>